package com.fdb.efp.nls.service.impl;

import com.fdb.basic.framework.core.base.FrameworkService;
import com.fdb.basic.framework.core.util.StringUtil;
import com.fdb.efp.nls.service.dao.ColltResRecordDao;
import com.fdb.efp.nls.service.domain.ColltResRecord;
import com.fdb.efp.nls.service.facade.ColltResRecordService;
import com.fdb.efp.nls.service.vo.ColltResRecordVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;

/**
 * <p>ServiceImpl: 催收结果记录				<p>
 * @author ligm
 * @date 2019-08-27
 */
@Service("colltResRecordService")
public class ColltResRecordServiceImpl implements ColltResRecordService, FrameworkService {
	
	private static Logger logger = LoggerFactory.getLogger(ColltResRecordServiceImpl.class);

	@Autowired
	private ColltResRecordDao colltResRecordDao;
	
	/**
	 * 新增操作
	 */
	public int insertColltResRecord(ColltResRecordVO inColltResRecordVo) {
		logger.debug("当前新增数据为:"+ inColltResRecordVo.toString());
		int num = 0;
		try {
			ColltResRecord colltResRecord = new ColltResRecord();
			beanCopy(inColltResRecordVo, colltResRecord);
			num = colltResRecordDao.insertColltResRecord(colltResRecord);
		} catch (Exception e) {
			logger.error("新增数据发生异常!", e);
			num = -1;
		}
		logger.debug("当前新增数据条数为:"+ num);
		return num;
	}

	/**
	 * 删除操作
	 */
	public int deleteByPk(ColltResRecordVO inColltResRecordVo) {
		logger.debug("当前删除数据条件为:"+ inColltResRecordVo);
		int num = 0;
		try {

			List<String> recordSernoList = null;
			if (Objects.nonNull(inColltResRecordVo) && !StringUtil.isNullorBank(inColltResRecordVo.getRecordSerno())) {
				recordSernoList = Arrays.asList(inColltResRecordVo.getRecordSerno().split(","));
			}
			if (Objects.nonNull(recordSernoList)) {
				Iterator<String> iterator = recordSernoList.iterator();
				while (iterator.hasNext()){
					inColltResRecordVo.setRecordSerno(iterator.next());

				}
			}

			ColltResRecord colltResRecord = new ColltResRecord();
			beanCopy(inColltResRecordVo, colltResRecord);
			num = colltResRecordDao.deleteByPk(colltResRecord);
		} catch (Exception e) {
			logger.error("删除数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ inColltResRecordVo +"删除的数据条数为"+ num);
		return num;
	}


	/**
	 * 更新操作
	 */
	public int updateByPk(ColltResRecordVO inColltResRecordVo) {
		logger.debug("当前修改数据为:"+ inColltResRecordVo.toString());
		int num = 0;
		try {
			ColltResRecord colltResRecord = new ColltResRecord();
			beanCopy(inColltResRecordVo, colltResRecord);
			num = colltResRecordDao.updateByPk(colltResRecord);
		} catch (Exception e) {
			logger.error("修改数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ inColltResRecordVo +"修改的数据条数为"+ num);
		return num;
	}
	
	/**
	 * 查询操作
	 */
	public ColltResRecordVO queryByPk(ColltResRecordVO inColltResRecordVo) {
		
		logger.debug("当前查询参数信息为:"+ inColltResRecordVo);
		try {
			ColltResRecord queryColltResRecord = new ColltResRecord();
			beanCopy(inColltResRecordVo, queryColltResRecord);
			ColltResRecord queryRslColltResRecord = colltResRecordDao.queryByPk(queryColltResRecord);
			if (Objects.nonNull(queryRslColltResRecord)) {
				ColltResRecordVO outColltResRecordVo = beanCopy(queryRslColltResRecord, new ColltResRecordVO());
				logger.debug("当前查询结果为:"+ outColltResRecordVo.toString());
				return outColltResRecordVo;
			} else {
				logger.debug("当前查询结果为空!");
			}
		} catch (Exception e) {
			logger.error("查询数据发生异常!", e);
		}
		return null;
	}

	/**
	 * 查询用户权限数据
	 */
	@SuppressWarnings("unchecked")
	public List<ColltResRecordVO> queryAllOwner(ColltResRecordVO colltResRecordVo) {
		logger.debug("当前查询本人所属数据信息的参数信息为:");
		List<ColltResRecordVO> list = null;
		try {
			List<ColltResRecord> colltResRecords = colltResRecordDao.queryAllOwnerByPage(colltResRecordVo);
			logger.debug("当前查询本人所属数据信息的结果集数量为:"+ colltResRecords.size());
			pageSet(colltResRecords, colltResRecordVo);
			list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		
		return list;
	}


	/**
	 * 查询当前机构权限数据
	 */
	@SuppressWarnings("unchecked")
	public List<ColltResRecordVO> queryAllCurrOrg(ColltResRecordVO colltResRecordVo) {

		logger.debug("当前查询本人所属机构数据信息的参数信息为:");
		List<ColltResRecord> colltResRecords = colltResRecordDao.queryAllCurrOrgByPage(colltResRecordVo);
		logger.debug("当前查询本人所属机构数据信息的结果集数量为:"+colltResRecords.size());
		List<ColltResRecordVO> list = null;
		try {
			pageSet(colltResRecords, colltResRecordVo);
			list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		
		return list;
	
	}


	/**
	 * 查询当前机构及下属机构权限数据
	 */
	@SuppressWarnings("unchecked")
	public List<ColltResRecordVO> queryAllCurrDownOrg(ColltResRecordVO colltResRecordVo) {

		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:");
		List<ColltResRecord> colltResRecords = colltResRecordDao.queryAllCurrDownOrgByPage(colltResRecordVo);
		logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ colltResRecords.size());
		List<ColltResRecordVO> list = null;
		try {
			pageSet(colltResRecords, colltResRecordVo);
			list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		
		return list;
	
	}

	/**
	 * TODO: 根据主键批量删除信息<br>
	 *
	 * 0.1:wanglihua:2019/9/5 15:43: TODO: <br>
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/9/5 15:43
	 * @date 2019/9/5 15:43
	 * @version 0.1
	 */
	@Override
	public int batchDeleteByPk(ColltResRecordVO inColltResRecordVo) {
		logger.debug("当前删除数据条件为:"+ inColltResRecordVo);
		int num = 0;
		try {
			List<String> recordSernoList = null;
			if (Objects.nonNull(inColltResRecordVo) && !StringUtil.isNullorBank(inColltResRecordVo.getRecordSerno())) {
				recordSernoList = Arrays.asList(inColltResRecordVo.getRecordSerno().split(","));
			}

			num = colltResRecordDao.batchDeleteByPk(recordSernoList);
		} catch (Exception e) {
			logger.error("删除数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ inColltResRecordVo +"删除的数据条数为"+ num);
		return num;
	}

	/**
	 * TODO: 插入导入的数据<br>
	 *
	 * 0.1:wanglihua:2019/9/3 20:35: TODO: <br>
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/9/3 20:35
	 * @date 2019/9/3 20:35
	 * @version 0.1
	 */
	@Override
	public int batchInsertIntoFormal(List<ColltResRecordVO> confirmedInfos) {
		logger.debug("当前修改数据为:"+ confirmedInfos.toString());
		int num = 0;
		try {
			num = colltResRecordDao.batchInsertIntoFormal(confirmedInfos);
		} catch (Exception e) {
			logger.error("修改数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ confirmedInfos +"修改的数据条数为"+ num);
		return num;
	}

	@Override
	public List<ColltResRecordVO> queryByTaskNo(List<String> taskNo) {
		logger.debug("当前查询的参数信息为:" + taskNo.toString());
		try {
			List<ColltResRecord> queryRs = colltResRecordDao.queryByTaskNo(taskNo);
			if (Objects.nonNull(queryRs) && !queryRs.isEmpty()) {
				List<ColltResRecordVO> list = (List<ColltResRecordVO>) beansCopy(queryRs, ColltResRecordVO.class);
				logger.info("查询到的结果为：" + list);
				return list;
			} else {
				logger.info("查询结果为空！");
			}
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public List<ColltResRecordVO> queryExAllOwner(List<String> conditions) {
		logger.debug("当前查询本人所属数据信息的参数信息为:");
		List<ColltResRecordVO> list = null;
		try {
			List<ColltResRecord> colltResRecords = colltResRecordDao.queryExAllOwner(conditions);
			logger.debug("当前查询本人所属数据信息的结果集数量为:"+ colltResRecords.size());
			list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return list;
	}
	@Override
	public List<ColltResRecordVO> queryAllByCondition(ColltResRecordVO colltResRecordVO) {
		logger.debug("当前查询数据信息的参数信息为:" +colltResRecordVO.toString());
		List<ColltResRecordVO> list = null;
		try {
			ColltResRecord colltResRecord = new ColltResRecord();
			beanCopy(colltResRecordVO, colltResRecord);
			List<ColltResRecord> colltResRecords = colltResRecordDao.queryAllByCondition(colltResRecord);
			logger.debug("当前查询数据信息的结果集数量为:"+ colltResRecords.size());
			list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return list;
	}

	@Override
	public List<ColltResRecordVO> queryOneByCondition(ColltResRecordVO colltResRecordVO) {
		logger.debug("当前查询参数信息为:"+ colltResRecordVO.toString());
		List<ColltResRecordVO> list = null;
		try {
			ColltResRecord queryColltResRecord = new ColltResRecord();
			beanCopy(colltResRecordVO, queryColltResRecord);
			List<ColltResRecord> colltResRecordList = colltResRecordDao.queryOneByCondition(queryColltResRecord);
			logger.debug("当前查询数据信息的结果集数量为:"+ colltResRecordList.size());
			list = (List<ColltResRecordVO>) beansCopy(colltResRecordList, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("查询数据发生异常!", e);
		}
		return list;


	}

	@Override
	public List<ColltResRecordVO> queryRepayLmt(ColltResRecordVO colltResRecordVO) {
		logger.debug("当前查询数据信息的参数信息为:" + colltResRecordVO.toString());
		List<ColltResRecordVO> list = null;
		try {
			ColltResRecord colltResRecord = new ColltResRecord();
			beanCopy(colltResRecordVO, colltResRecord);
			List<ColltResRecord> colltResRecords = colltResRecordDao.queryRepayLmt(colltResRecord);
			logger.debug("当前查询数据信息的结果集数量为:" + colltResRecords.size());
			list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return list;
	}

	@Override
	public int deleteOneVO(ColltResRecordVO colltResRecordVo) {
		logger.info("当前删除数据条件为:"+ colltResRecordVo.toString());
		int num = 0;
		try {
			ColltResRecord colltResRecord = new ColltResRecord();
			beanCopy(colltResRecordVo, colltResRecord);
			num = colltResRecordDao.deleteOneDomain(colltResRecord);
		} catch (Exception e) {
			logger.error("删除数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件删除的数据条数为:"+ num);
		return num;
	}

}
